Logo
Logo

Introdução ao R Markdown

R Markdown é uma ferramenta poderosa que combina a simplicidade da linguagem Markdown com a capacidade analítica do R, permitindo a criação de documentos dinâmicos e reprodutíveis. Ele é amplamente utilizado para gerar relatórios, apresentações, dashboards e até livros inteiros, integrando texto, código, resultados e formatação em um único arquivo.

Para usar o R Markdown, é preciso instalar e carregar o pacote no R.

if (!require("rmarkdown")) install.packages("rmarkdown")
library(rmarkdown)

Para criar um novo documento R Markdown:

  1. Abra o RStudio.

  2. Vá em File > New File > R Markdown.

  3. Preencha as informações básicas e clique em OK.

Vantagens do R Markdown

  • Reprodutibilidade: Integra dados, código e resultados em um único documento
  • Flexibilidade: Suporta múltiplos formatos de saída (HTML, PDF, Word, etc.)
  • Automação: Atualiza resultados automaticamente quando os dados mudam

Estrutura do R Markdown

Um documento R Markdown (extensão .Rmd) é composto por três elementos principais:

  • Cabeçalho YAML: Metadados que controlam a formatação do documento

  • Textos formatados em Markdown: Conteúdo narrativo com formatação simples

  • Chunks de código: Blocos de código em R ou outras linguagens

YAML

O cabeçalho YAML é a seção inicial do documento, delimitada por ---. Ele define metadados como título, autor, data,temas e formato de saída.

As principais chaves para o cabeçalho são as seguintes:

  • title: Título do documento

  • author: Nome(s) do(s) autor(es)

  • date: Data no documento

  • format: Formato de saída

  • toc: Tabela de conteúdos

  • theme: Tema visual

---
title: "Título do documento"
author: 
  - name: "Autor(a) 1"
  - name: "Autor(a) 2 "
output:
  html_document:
    theme: 
      bg : '#ffffff'  # cor do fundo
      fg : '#140945'  # cor do texto
    toc: yes
---

Existem alguns temas prontos para utilizar no theme. Neste RPubs há alguns exemplos

Formatação de textos

Titulação

# Título Principal

## Subtítulo

### Subseção

#### Subsubseção

Título Principal

Subtítulo

Subseção

Subsubseção

Ênfase

  • Negrito: **texto**

  • Itálico: *texto*

  • Negrito e itálico: ***texto***

  • Tachado: ~~texto~~

Listagem

Para listas não ordenadas utiliza-se - ou *

  • Item 1: - Item 1

  • Item 2: - Item 2

    • Subitem 2.1: - subitem 2.1
  • Item 1: * Item 1

  • Item 2: * Item 2

    • Subitem 2.1: * subitem 2.1

Para listas ordenadas utiliza-se o número seguido do ponto

  1. Primeiro item: 1. Primeiro item
  2. Segundo item: 2. Segundo item 2.1. Primeiro subitem 2.1: 1. Subitem 2.1

Chunks

Os chunks de códigos são iniciados por ``` {r, …} e fechados por ``` . Eles possuem uma série de argumentos que manipulados apropriadamente rendem diferentes saídas, isto é, pode-se omitir código, resultados do código, entre outras. Abaixo, são apresentadas os principais argumentos.

Opção Valor Padrão Descrição
eval TRUE Indica se o código deve ser executado
include TRUE Indica se o código deve ser exibido no documento final. Os resultados não serão apresentados.
collapse FALSE Indica se o código e os resultados do chunk devem ser colapsados em um bloco único.
echo FALSE Indica se o código será exibido no documento final. Os resultados serão apresentados.
error TRUE Indica se mensagens de erros serão exibidas.
message TRUE Indica se mensagens geradas pelo código serão exibidas.
warning TRUE Indica se avisos gerados pelo código serão exibidos.
fig.cap NULL Título de gráfico referente ao chunk.
fig.height 7 Altura para gráficos criados pelo código (em polegadas).
fig.width 7 Largura para gráficos criados pelo código (em polegadas).

Inserção de elementos

Equações matemáticas

Use $equação$ para equações dentro do texto, como \(E = mc^2\) ou \(\sum_{i=1}^n i = \frac{n(n+1)}{2}\).

$E = mc^2$ ou $\sum_{i=1}^n i = \frac{n(n+1)}{2}$

Para equações em destaque, coloque a expressão entre $$

$$
f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}
$$

\[ f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \]

Imagens

knitr::include_graphics("Imagens/dataviz.png")

Tabelas

  • Pelo próprio Markdown:

Usar | para delimitar as colunas e hífen - na segunda linha para indicar que acima estão os títulos das colunas. O alinhamento da tabela é controlado utilizando : ao lado do campo horizontal de hífens ---, na segunda linha da tabela.

| Alinhado à esquerda | Centralizado | Alinhado à direita |
|:---------------------|:-----------:|-------------------:|
| Conteúdo             | Conteúdo    | Conteúdo           |
Alinhado à esquerda Centralizado Alinhado à direita
Conteúdo Conteúdo Conteúdo

Dentro do chunk com o pacote knitr:

performance = read_csv("bases/student_habits_performance.csv")

# Criar tabela descritiva
dados_resumo <- data.frame(Variável = c("Nota", "Horas de Netflix", "Horas de Estudo",
    "Horas de sono"), Média = c(mean(performance$exam_score), mean(performance$netflix_hours),
    mean(performance$study_hours_per_day), mean(performance$sleep_hours)), Desvio_Padrão = c(sd(performance$exam_score),
    sd(performance$netflix_hours), sd(performance$study_hours_per_day), sd(performance$sleep_hours)),
    Mínimo = c(min(performance$exam_score), min(performance$netflix_hours), min(performance$study_hours_per_day),
        min(performance$sleep_hours)), Máximo = c(max(performance$exam_score), max(performance$netflix_hours),
        max(performance$study_hours_per_day), max(performance$sleep_hours)))

knitr::kable(dados_resumo, digits = 2, caption = "Estatísticas Descritivas")
Estatísticas Descritivas
Variável Média Desvio_Padrão Mínimo Máximo
Nota 69.60 16.89 18.4 100.0
Horas de Netflix 1.82 1.08 0.0 5.4
Horas de Estudo 3.55 1.47 0.0 8.3
Horas de sono 6.47 1.23 3.2 10.0

Códigos embutidos

Códigos embutidos permitem inserir resultados de R diretamente no texto. Use “r código” entre crases ```` para avaliar expressões R inline.

Exemplos:

A data de hoje é `r Sys.Date()`
  • A data de hoje é 2025-09-17
O número de linhas no dataset é `r nrow(mtcars)`
  • O número de linhas no dataset é 32
A nota média dos alunos da base é `r mean(performance$exam_score)`
  • A nota média dos alunos da base é 69.6015